package com.itdfq.LeetCode.leetcode.editor.cn;
//给你一个字符串 date ，按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。 
//
// 通常情况下，我们认为 1 月 1 日是每年的第 1 天，1 月 2 日是每年的第 2 天，依此类推。每个月的天数与现行公元纪年法（格里高利历）一致。 
//
// 
//
// 示例 1： 
//
// 
//输入：date = "2019-01-09"
//输出：9
// 
//
// 示例 2： 
//
// 
//输入：date = "2019-02-10"
//输出：41
// 
//
// 示例 3： 
//
// 
//输入：date = "2003-03-01"
//输出：60
// 
//
// 示例 4： 
//
// 
//输入：date = "2004-03-01"
//输出：61 
//
// 
//
// 提示： 
//
// 
// date.length == 10 
// date[4] == date[7] == '-'，其他的 date[i] 都是数字 
// date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日 
// 
// Related Topics 数学 字符串 👍 70 👎 0


import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author GodChin
 * @date 2021-12-21 10:53:53
 * @title 一年中的第几天
 * @blog https://itdfq.com
 */

class T1154_DayOfTheYear {

    public static void main(String[] args) {
        Solution solution = new T1154_DayOfTheYear().new Solution();
        int i = solution.dayOfYear("2000-12-04");
        System.out.println(i);
    }

    //leetcode submit region begin(Prohibit modification and deletion)

    class Solution {
        List<Integer> months = Arrays.asList(1, 3, 5, 7, 8, 10, 12);

        public int dayOfYear(String date) {
            String y = date.substring(0, 4);
            String month = date.substring(5, 7);
            String day = date.substring(8);
            Integer year = Integer.parseInt(y);

            Map<Integer, Integer> map = new HashMap<>();
            for (int i = 1; i <= 12; i++) {
                if (months.contains(i)) {
                    map.put(i, 31);
                } else {
                    map.put(i, 30);
                }
            }

            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                map.put(2, 29);
            } else {
                map.put(2, 28);
            }
            int m = Integer.parseInt(month);
            int d = Integer.parseInt(day);
            if (m == 1) {
                return d;
            }
            int n = m - 1;
            int sum = 0;
            for (int i = 1; i <= n; i++) {
                sum = sum + map.get(i);
            }
            return sum + d;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}
